home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / batchut / dat13c.zip / DAT.ASM next >
Assembly Source File  |  1994-03-08  |  36KB  |  924 lines

  1. ;--------------------------------------------------------------------------;
  2. ;  Program:    DAT    .Asm                                                 ;
  3. ;  Purpose:    Displays current date and time.                             ;
  4. ;  Notes:      Compiles under TURBO Assembler, v3.0. Should work on any    ;
  5. ;                 machine running MS-DOS, v2.xx or higher.                 ;
  6. ;  Status:     Released into the public domain. Enjoy! If you use it,      ;
  7. ;                 let me know what you think. You don't have to send       ;
  8. ;                 any money, just comments and suggestions.                ;
  9. ;  Updates:    06-Mar-90, v1.0, GAT                                        ;
  10. ;                 - initial version.                                       ;
  11. ;              13-Mar-90, v1.1, GAT                                        ;
  12. ;                 - added n option to suppress final CR/LF sequence.       ;
  13. ;              19-Mar-90, GAT                                              ;
  14. ;                 - fixed up on-line help message.                         ;
  15. ;              22-Apr-90, v1.2, GAT                                        ;
  16. ;                 - revised most procedures based on work with ASK.        ;
  17. ;              05-May-90, GAT                                              ;
  18. ;                 - fixed bug in handling of non-zero return codes.        ;
  19. ;              12-Jun-90, GAT                                              ;
  20. ;                 - fixed bug in conv_Int2Ascii wrt DI's final value.      ;
  21. ;              08-Jul-90, GAT                                              ;
  22. ;                 - added macros to push/pop registers.                    ;
  23. ;              28-Aug-90, v1.3a, GAT                                       ;
  24. ;                 - put equates and macros in separate files.              ;
  25. ;                 - put common routines in libs.                           ;
  26. ;                 - added equates for date/time separators.                ;
  27. ;              12-Oct-91, v1.3b, GAT                                       ;
  28. ;                 - revised include file names.                            ;
  29. ;                 - replaced references to Push_M and Pop_M macros with    ;
  30. ;                    calls to push and pop.                                ;
  31. ;                 - removed local stack: it's not necessary.               ;
  32. ;              03-Jul-93, v1.3c, GAT                                       ;
  33. ;                 - compiled with TASM v3.0.                               ;
  34. ;                 - version number now comes from makefile.                ;
  35. ;                 - specified ??date in lowercase.                         ;
  36. ;--------------------------------------------------------------------------;
  37.  
  38. ;--------------------------------------------------------------------------;
  39. ;  Author:     George A. Theall                                            ;
  40. ;  SnailMail:  TifaWARE                                                    ;
  41. ;              610 South 48th St                                           ;
  42. ;              Philadelphia, PA.  19143                                    ;
  43. ;              U.S.A.                                                      ;
  44. ;  E-Mail:     george@tifaware.com                                         ;
  45. ;              theall@popmail.tju.edu                                      ;
  46. ;              theall@mcneil.sas.upenn.edu                                 ;
  47. ;              george.theall@satalink.com                                  ;
  48. ;--------------------------------------------------------------------------;
  49.  
  50. ;--------------------------------------------------------------------------;
  51. ;                          D I R E C T I V E S                             ;
  52. ;--------------------------------------------------------------------------;
  53. DOSSEG
  54. MODEL     tiny
  55.  
  56. IDEAL
  57. LOCALS
  58. JUMPS
  59.  
  60. FALSE               EQU       0
  61. TRUE                EQU       NOT FALSE
  62. BELL                EQU       7
  63. BS                  EQU       8
  64. TAB                 EQU       9
  65. CR                  EQU       13
  66. LF                  EQU       10
  67. ESCAPE              EQU       27             ; nb: ESC is a TASM keyword
  68. SPACE               EQU       ' '
  69. KEY_F1              EQU       3bh
  70. KEY_F2              EQU       3ch
  71. KEY_F3              EQU       3dh
  72. KEY_F4              EQU       3eh
  73. KEY_F5              EQU       3fh
  74. KEY_F6              EQU       40h
  75. KEY_F7              EQU       41h
  76. KEY_F8              EQU       42h
  77. KEY_F9              EQU       43h
  78. KEY_F10             EQU       44h
  79. KEY_HOME            EQU       47h
  80. KEY_UP              EQU       48h
  81. KEY_PGUP            EQU       49h
  82. KEY_LEFT            EQU       4bh
  83. KEY_RIGHT           EQU       4dh
  84. KEY_END             EQU       4fh
  85. KEY_DOWN            EQU       50h
  86. KEY_PGDN            EQU       51h
  87. KEY_INS             EQU       52h
  88. KEY_DEL             EQU       53h
  89. KEY_C_F1            EQU       5eh
  90. KEY_C_F2            EQU       5fh
  91. KEY_C_F3            EQU       60h
  92. KEY_C_F4            EQU       61h
  93. KEY_C_F5            EQU       62h
  94. KEY_C_F6            EQU       63h
  95. KEY_C_F7            EQU       64h
  96. KEY_C_F8            EQU       65h
  97. KEY_C_F9            EQU       66h
  98. KEY_C_F10           EQU       67h
  99. KEY_C_LEFT          EQU       73h
  100. KEY_C_RIGHT         EQU       74h
  101. KEY_C_END           EQU       75h
  102. KEY_C_PGDN          EQU       76h
  103. KEY_C_HOME          EQU       77h
  104. KEY_C_PGUP          EQU       84h
  105. KEY_F11             EQU       85h
  106. KEY_F12             EQU       86h
  107. KEY_C_F11           EQU       89h
  108. KEY_C_F12           EQU       8ah
  109. @16BIT              EQU       (@Cpu AND 8) EQ 0
  110. @32BIT              EQU       (@Cpu AND 8)
  111. NOWARN RES
  112. MACRO    PUSHA                               ;; Pushs all registers
  113.    IF @Cpu AND 2                             ;;  if for 80186 or better
  114.       pusha                                  ;;   use regular opcode
  115.    ELSE                                      ;;  else
  116.       push ax cx dx bx sp bp si di           ;;   nb: order matters!
  117.                                              ;;   nb: SP is not original!
  118.    ENDIF
  119. ENDM
  120. MACRO    POPA                                ;; Pops all registers
  121.    IF @Cpu AND 2                             ;;  if for 80186 or better
  122.       popa                                   ;;   use regular opcode
  123.    ELSE                                      ;;  else
  124.       pop di si bp bx bx dx cx ax            ;;   nb: order matters!
  125.                                              ;;   nb: don't pop SP!
  126.    ENDIF
  127. ENDM
  128. NOWARN RES
  129. MACRO    ZERO     RegList                    ;; Zeros registers
  130.    IRP      Reg, <RegList>
  131.          xor      Reg, Reg
  132.    ENDM
  133. ENDM
  134.  
  135. DOS                 EQU       21h            ; main MSDOS interrupt
  136. STDIN               EQU       0              ; standard input
  137. STDOUT              EQU       1              ; standard output
  138. STDERR              EQU       2              ; error output
  139. STDAUX              EQU       3              ; COM port
  140. STDPRN              EQU       4              ; printer
  141. TSRMAGIC            EQU       424bh          ; magic number
  142. STRUC     ISR
  143.           Entry     DW        10EBh          ; short jump ahead 16 bytes
  144.           OldISR    DD        ?              ; next ISR in chain
  145.           Sig       DW        TSRMAGIC       ; magic number
  146.           EOIFlag   DB        ?              ; 0 (80) if soft(hard)ware int
  147.           Reset     DW        ?              ; short jump to hardware reset
  148.           Reserved  DB        7 dup (0)
  149. ENDS
  150. STRUC     ISRHOOK
  151.           Vector    DB        ?              ; vector hooked
  152.           Entry     DW        ?              ; offset of TSR entry point
  153. ENDS
  154. STRUC     TSRSIG
  155.           Company   DB        8 dup (" ")    ; blank-padded company name
  156.           Product   DB        8 dup (" ")    ; blank-padded product name
  157.           Desc      DB        64 dup (0)     ; ASCIIZ product description
  158. ENDS
  159. GLOBAL at : PROC
  160. GLOBAL errmsg : PROC
  161.    GLOBAL ProgName : BYTE                    ; needed for errmsg()
  162.    GLOBAL EOL : BYTE